End user applications, such as financial services software, that are designed to provide particular functionality, may be implemented in many different ways. For example, on a mobile device 120 such as a smartphone or tablet computer, the application may be accessed over the Internet using a browser on the mobile device 120. Alternatively, the application may be implemented either as a native application 122A or as a hybrid application 122B. A native application 122A is an application having a Graphical User Interface (GUI 202) designed to run in the context of the operating system of the mobile device 120.
In some embodiments, hybrid mobile application 122B includes a native layer implemented as an executable object compiled for execution on a particular computing platform. For example, the native layer can be compiled or built for execution on mobile device 120 (e.g., built for the operating system, processor, chipset, etc.) or devices having a similar configuration as mobile device 120. Because the native layer is built to run on mobile device 120, the native layer of hybrid application 122B has access to system functions and features of the mobile device 120. Example system functions may include the mobile device native phone function, camera, sensors, GPS, etc. In some embodiments, hybrid application 122B also includes an embedded browser and the native layer serves as a container for the embedded browser. Thus, the embedded browser can read, interpret, compile, and/or execute web code and/or technologies, such as HTML, JavaScript, cascading style sheets, etc., to generate graphical user interfaces, communicate with web servers, and perform other web client functions. The specific functionality of the embedded browser depends on the web code loaded by the embedded browser. Because hybrid applications 122B use an embedded browser to implement some of the application functionality, hybrid applications tend to be easier to extend to multiple computer platforms.
For laptop computers, desktop computers, and other types of computing devices (collectively computers 124), the application likewise may have a GUI 202 that is designed to run in the context of the computer's operating system, or may provide application output using a browser 210 running on the computing device. In some instances, the application is a stand-alone application 126A that is installed on the computer 124 and executes in the context of an operating system that is controlling the basic operating functions of computer 124 and the application 126A. In other instances, an application client is installed on the computer 124 and interacts with an application server 150, such that execution of the application is split between the locally installed client and the application server 150. In other instances, a web browser 210 is used on the computer 124 to access a web server 150 hosting the application 152, and script downloaded to the browser 210 is used to process information received from the application server 150 and interact with the application server 150. There therefore are many ways that applications may be designed to execute to provide desired functionality.
Regardless of how the application is designed to operate, when a user is having trouble interacting with the application, the user may desire to obtain help from a live agent 130.
Accordingly, application providers often provide call center 140s 140 staffed with agents 130, supervisors 132, and other personnel, to receive and respond to calls and text-based chat requests from customers. For example, if a customer 115 is using a Software as a Service (SaaS) application, and is unsure which aspect of the SaaS application should be used to perform a desired function, the customer 115 may want to talk or chat (text) with an agent 130 that has been trained to use the SaaS application.
As used herein, the term “customer” will be used to refer to the person using the application and the term “agent” will be used to refer to the person at the call center 140 that picks up the call from the customer or that assumes responsibility for a text-based dialog with the customer. Where the agent is a live person, the live agent may be working at a call center 140 or may be an independent person affiliated with the call center 140. In some embodiments, the “live agent” may initially be an automated response mechanism, such as an Artificial Intelligent (AI) bot to provide computer generated customer support. In some embodiments, the agent may initially be an automated response mechanism, and may change to a live person during the course of the interaction with the customer 115. The terms “customer” and “agent” will also be used herein to refer to the respective computing devices in use by each of the participants to a visualization session between the customer and agent. Thus, for example, the term “customer” may refer to the live person running the application or to the computing device being used by the live person to execute the application depending on the context. Likewise, the term “agent” may refer to the live person or AI bot at the call center 140, or to the computing device being used by the live person at the call center 140, depending on the context. Where the context indicates that computer generated messages are being passed between various computer components shown in FIG. 1, the respective terms “customer” and “agent” are being used to refer to the computing devices in use by the respective live persons, or between the computing device in use by the customer person and the AI bot.
Agents 130 are often tasked with helping a large number of people. Accordingly, reducing the amount of time an agent 130 takes to assist a customer 115 is desirable, since doing so enables the agent 130 to assist a larger number of customers 115 to reduce the possibility that a customer 115 requiring assistance is unable to obtain access to an agent 130. Likewise, enhancing the agent's 130 ability to provide accurate advice in a timely manner is paramount, so reducing the amount of time the agent 130 spends trying to ascertain the nature of the customer's 115 problem and guide the customer to its resolution can greatly increase agent 130 productivity and decrease customer 115 frustration with the application and with the call center 140.
One approach to enabling agents 130 to provide enhanced service to customers 115 is to use WebRTC to enable agents to see the customer's 115 view of the application 122, 126, so that the agent 130 can more quickly ascertain why the customer 115 is seeking help.
WebRTC uses a peer-to-peer protocol. To establish an audio/video WebRTC call, a first peer-to-peer connection is established between the customer 115 and agent 130 to transmit audio, and a second, separate, peer-to-peer connection is established between the customer 115 and agent 130 to enable the agent to see the customer's application screen. Where the agent is also going to show video to the customer 115, such as where a webcam is to be used to provide the customer 115 with a live view of the agent 130, a third peer-to-peer connection is required to be established. While it may be possible, in some instances, to bundle the media streams of the peer-to-peer connections for common transportation across the communication network 105 depending on the capabilities of the endpoints, not all endpoints necessarily support bundling of this nature. Further, adding a media stream to an existing peer-to-peer connection may not be possible, depending on how the WebRTC standard develops over time. Thus, implementation of multiple peer-to-peer connections may require not only separate signaling to take place between the endpoints on the network, but also may require separate transport paths to be built through the communication network 105 to handle the separate media streams between the endpoints.
Unfortunately, the use of WebRTC has several drawbacks. A first drawback to using WebRTC is that, since a WebRTC call is not a conventional telephone call, such as a call on the Public Switched Telephone Network (PSTN) or a Voice over Internet Protocol (VoIP) voice call, the WebRTC call may require special routing to be implemented at the call center 140. Specifically, most of today's enterprise call center 140s would need to make substantial investments to implement the call routing infrastructure needed to manage and direct each WebRTC call to the appropriate agent 130. The call center 140 would need to acquire or lease new telecommunications equipment, modify its network infrastructure to accommodate WebRTC protocols, as well as design, configure and test business rules to route the WebRTC calls. For a large call center 140, the cost of these modifications could easily exceed seven figures in dollars.
Another drawback to using WebRTC is that configuring the call center 140 to handle both today's voice calls as well as new WebRTC calls may require the call center 140 to set aside a dedicated group of agents 130 just for the WebRTC calls. Since WebRTC calls require the use of a non-telephony endpoint to interact with the calls, if an agent 130 is required to handle both normal voice calls and WebRTC calls, the agent 130 may need to physically change headsets depending on the type of call.
Yet another drawback to using WebRTC is that, since the WebRTC call is essentially a video phone call from a web browser 210, and not all browsers 210 universally support WebRTC, the solution is far from ubiquitous. Even if the customer's browser 210 supports WebRTC, the likelihood of the call being successful can be compromised by the fact that its peer-to-peer signaling mechanism can experience an unacceptably high failure rate traversing firewalls at the customer's location.
Still another drawback to using WebRTC is that it becomes difficult to escalate the WebRTC call, transfer the WebRTC call, or otherwise allow supervisors 132 or other higher-tier people at the call center 140 to join the call or to interact with the WebRTC call. Specifically, as noted above, WebRTC is a peer-to-peer protocol which means that the WebRTC call is a set of peer-to-peer communication sessions between the customer 115 and the agent 130. Thus, for example if the agent 130 wants to introduce the customer to another agent within the call center 140 (a warm transfer), a second set of peer-to-peer communication sessions will need to be established between the first agent and the second agent, and a third set of peer-to-peer communication sessions will need to be established between the second agent and the customer. Thus, to perform the transfer, a fully connected mesh of peer-to-peer connections must be established. If a fourth person is to be added, such as an additional supervisor, the number of peer-to-peer connection increases accordingly. Since some browsers today, possibly other than the Google Chrome browser, are unlikely to be able to sustain even two simultaneous WebRTC connections, the use of WebRTC can limit the manner in which the call center 140 is able to interact with customers 115.
Alternatively, 2-way WebRTC calls that need to escalate to multi-way could be re-routed to a bridge, where each participant connects directly (peer-to-peer) to the bridge. The bridge itself adds extra expense, and to ensure its availability, a call center 140 would typically need to deploy and maintain at least two such bridges, possibly at each call center 140 location. This, once again, increases the cost for a call center 140 to use WebRTC as a basis for implementing visual engagement with its customers 115.